Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In some cases, software applications that are primarily designed for synchronous communication with a server can be designed to allow offline functionality. For instance, a personal information management application that allows user access to email, contacts and calendar information, may be configured both for online access and offline access. In offline mode, a user makes changes to his or her email, contacts or calendar appointments and these changes are queued until the next time the user is online. This offline period may be relatively short (e.g. during a flight), or may be extensive. When the user brings the application back online, backend server code may have changed, introducing potential client/server version mismatches.